import puppeteer from 'puppeteer-core';
import test from './test';

/**
 *
 * @param {number} t
 * @returns {Promise<void>}
 */
const delay = async (t) =>
  new Promise((resolve) => {
    setTimeout(resolve, t);
  });

(async () => {
  test();
  // 首先启动浏览器
  const browser = await puppeteer.launch({
    // 这里改成你的 chrome 浏览器的路径
    executablePath: 'C:/Program Files/Google/Chrome/Application/chrome.exe',
    // 这个 false 表示用有头模式运行，会有一个可视的浏览器界面，把它改成 true 就会以无头模式运行，没有界面，可以在后台运行
    headless: false,
  });

  // 新建一个页面
  const page = await browser.newPage();

  // 打开百度
  await page.goto('https://www.baidu.com/');

  // 设置页面的宽高像素
  await page.setViewport({ width: 1920, height: 1024 });

  // 在 id=kw 的输入框里输入“黄绿琳”
  await page.type('input#kw', '黄绿琳');
  console.log('在 id=kw 的输入框里输入“黄绿琳”');

  // 点击文本为“百度一下”的元素
  await page.click('text/百度一下');
  console.log('点击文本为“百度一下”的元素');

  // 查询结果有个 id=content_left 的元素, 等待它出现就说明查询结果出来了
  const container = await page.waitForSelector('#content_left');
  console.log('查询结果显示出来了:');

  // 解析查询结果里的 class=.c-title 的元素，也就是标题
  const titles = await container.$$eval('.c-title', (nodes) =>
    nodes.map((n) => n.innerText),
  );

  // 一个个打印出来看看
  titles.forEach((t, i) => {
    console.log(i, ':', t);
  });

  // 准备关闭浏览器了
  for (let i = 0; i <= 5; i++) {
    await delay(1000);
    console.log('倒计时：', 5 - i);
  }

  // 关闭掉浏览器
  await browser.close();
  console.log('关闭');
})();
